package y.q.h.util.apicontroller;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;


import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import y.q.h.common.CommonController;
import y.q.h.util.LogUtil;

/**
 * REST API 通用控制器 - MP 3.5.0 后被移除
 *
 * @author hubin
 * @since 2018-06-08
 */
// @Deprecated
@Slf4j
public class ApiController extends CommonController {

    @Autowired
    protected LogUtil logUtil;



//    @Autowired
//    protected RabbitTemplate rabbitTemplate;



    /**
     * 请求成功
     *
     * @param data 数据内容
     * @param <T>  对象泛型
     * @return ignore
     */
    protected <T> R<T> success(T data) {
        return R.success(data);
    }

    /**
     * 请求成功 - 是否使用PageUtils分页
     *
     * @param page 数据内容
     * @param <T>  对象泛型
     * @return ignore
     */
    protected <T> R<T> success(Page<?> page, boolean isPageUtils) {
        if (isPageUtils){
            return (R<T>) R.success(new PageUtils(page));
        }
        return (R<T>) R.success(page);
    }


    /**
     * 请求成功 - LaYui
     *
     * @param data  数据内容
     * @param <T>   对象泛型
     * @param count 数据总条数
     * @return ignore
     */
    protected <T> R<T> success(T data, Integer count) {
        return R.success(data, count);
    }

    /**
     * 请求失败
     *
     * @param msg 提示内容
     * @return ignore
     */
    protected <T> R<T> failed(String msg) {
        return R.failed(msg);
    }

    /**
     * 请求失败
     *
     * @param errorCode 请求错误码
     * @return ignore
     */
    protected <T> R<T> failed(IErrorCode errorCode) {
        return R.failed(errorCode);
    }

    /**
     * 是否成功 - 成功调用success，失败调用failed
     *
     * @param isSuccess boolean
     * @return {@link R }<{@link T }>
     * @date: 2023/12/31
     * @author SongRenShuo
     */
    protected <T> R<T> isSuccess(Boolean isSuccess) {
        if (isSuccess) {
            return success(null);
        }
        return failed("操作失败");
    }

}
